// 场景: 协同开发一个任务清单应用
// =====================  迭代器模式  开始  ======================
console.log('=====================  迭代器模式  开始  ======================')

// 目的： 遍历 todos 
const todos = {
    lift: ['吃饭', '睡觉', '打豆豆'],
    learn: ['语文', '数学'],
    aaa: ['aaa'],
    // 实现2: 统一方法处理
    each: function (cb) {
        const all = [].concat(this.lift, this.learn, this.aaa);
        for (const item of all) {
            cb(item);
        }
    },
    // 实现3： 迭代器
    [Symbol.iterator]: function() {
        const all = [...this.lift, ...this.learn, ...this.aaa];
        let index = 0;
        return {
            next() {
                return {
                    value: all[index],
                    done: index++ >= all.length
                }
            }
        };
    }    


};

// ===================== 实现1 开始  ======================
console.log('===================== 实现1 开始  ======================')

// 实现1
for (const item of todos.lift) {
    console.log('item实现1', item);
}
for (const item of todos.learn) {
    console.log('item实现1', item);
    
}
for (const item of todos.aaa) {
    console.log('item实现1', item);
    
}

console.log('===================== 实现1 结束  ======================')
// ===================== 实现1 结束  ======================

// =====================  实现2 开始  ======================
console.log('=====================  实现2 开始  ======================')

// 实现2
todos.each(function (item) {
    console.log('item实现2', item);
    
});

console.log('=====================  实现2 结束  ======================')
// =====================  实现2 结束  ======================

// =====================  实现3 开始  ======================
console.log('=====================  实现3 开始  ======================')

// 实现3
for (const item of todos) {
    console.log('item实现3', item);
    
}

console.log('=====================  实现3 结束  ======================')
// =====================  实现3 结束  ======================





console.log('=====================  迭代器模式  结束  ======================')
// =====================  迭代器模式  结束  ======================